package split;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import cerna_pairs.Time;

/**
 * 2016.11.18
 * @author zhang
 *	python的divide
 */

public class Split {
	public static void main(String[] args){
		long start = System.currentTimeMillis();
		String content = null;
		String output = null;
		File input = new File(args[0]);
		
		int num = 0;
		if(args.length >= 3){
			num = Integer.parseInt(args[2]);
		}
		
		Pattern pattern = Pattern.compile("\\|/$");		// 用来将输入目录最后的那个斜杠去掉
		Matcher m = pattern.matcher(args[1]);
		if (m.matches()){
			output = args[1].split("\\|/$")[0];
		}else{
			output = args[1];
		}

		if(!isExist(input)){		// 判断输入目录是否存在
			return;
		}
		isDirExist(new File(output));		// 判断输出目录是否存在
		
		try{
			FileReader fr = new FileReader(input);
			BufferedReader br = new BufferedReader(fr);
			
			Set<String> have = new HashSet<String>();
			while((content = br.readLine()) != null){
				String flag = content.split("\\s+")[0];
				
				if(!have.contains(flag)){
					if(!isOutputExist(new File(output + "/" + flag))){
						return;
					}
					have.add(flag);
					File tem = new File(output + "/" + flag);
					FileWriter fw = new FileWriter(tem);
					BufferedWriter bw = new BufferedWriter(fw);
					
					bw.write(content);
					bw.newLine();
					bw.close();
					fw.close();
				}else{
					File tem = new File(output + "/" + flag);
					FileWriter fw = new FileWriter(tem, true);
					BufferedWriter bw = new BufferedWriter(fw);
					
					bw.write(content);
					bw.newLine();
					bw.close();
					fw.close();

				}
			}
			
		}catch(IOException e){
			e.printStackTrace();
		}
		
		Time time = new Time();
		System.out.println("程序运行结束！");
		long end = System.currentTimeMillis();
		time.run_time(start, end);
		
	}
	
	
	// 判断输入文件是否存在
	public static boolean isExist(File file){
		if(file.exists() && file.isFile()){
			System.out.println("使用文件:" + file);
			return true;
		}else{
			System.out.println(file + "文件不存在");
			return false;
		}
	}
	// 判断输出文件是否存在
	public static boolean isOutputExist(File file){
		if(file.exists() && file.isFile()){
			System.out.println("使用已经存在的文件" + file);
			return true;
		}else{
			try{
				file.createNewFile();
				System.out.println("创建新文件" + file);
				return true;
			}catch (IOException e){
				System.out.println("创建文件" + file + "失败，错误信息：" + e.getMessage());
				return false;
			}
		}
	}
	public static void isDirExist(File file) {
		// TODO Auto-generated method stub
		if(file.exists() && file.isDirectory()){
			System.out.println("使用已经存在的文件夹" + file);
		}else{
			file.mkdir();
			System.out.println("创建新文件夹" + file);
		}	
	}
}
